﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Practice
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// метод очистки textBox1 и textBox2
        /// </summary>
        private void очиститьToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            textBox2.Clear();
        }

        /// <summary>
        /// метод выхода из программы
        /// </summary>
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Выйти из программы?", "Выход", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (result == DialogResult.Yes)
                Application.Exit();
        }

        /// <summary>
        /// метод открытия окна Form2
        /// </summary>
        private void о_программеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.Show();
        }

        /// <summary>
        /// метод, позволяющий загрузить текст файла в textBox1
        /// </summary>
        private void загрузитьФайлToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog open = new OpenFileDialog();
            if (open.ShowDialog() == DialogResult.OK)
                textBox1.Text = File.ReadAllText(open.FileName, Encoding.Default);
        }

        /// <summary>
        /// метод сохранения текста из textBox1 в файл
        /// </summary>
        private void сохранитьФайлToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog save = new SaveFileDialog();
            if (save.ShowDialog() == DialogResult.OK)
            {
                File.WriteAllText(save.FileName, textBox1.Text);
                DialogResult result = MessageBox.Show("Файл сохранен!", "Сохранено!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        /// <summary>
        /// метод передачи данных из textBox1 парсеру для осуществления необходимых подсчётов
        /// </summary>
        private void button1_Click(object sender, EventArgs e)
        {
            parser p = new parser();
            p.OnReady += new parser.Ready(resultParse);
            p.Parse(textBox1.Text);
        }

        /// <summary>
        /// метод, с помощью которого результат вычислений записывается в textBox2 (вывод результата на экран)
        /// </summary>
        private int resultParse(int Count)
        {
            textBox2.Text = Count.ToString();
            return 0;
        }
    }
}
